import { Module } from '@nestjs/common'
// TypeOrmModule 链接 MySql 数据库
import { TypeOrmModule } from '@nestjs/typeorm'
import { AppController } from './app.controller'
import { AppService } from './app.service'
import { TestService } from './test.service'
import { UserModule } from './modules/user/user.module'
import { AuthModule } from './modules/auth/auth.module'
import { BookModule } from './modules/book/book.module'
import { getMySqlInfo } from './utils'

const { host, port, username, password } = getMySqlInfo()

@Module({
  // 引入其他模块，相当于把其他模块的控制器和提供者都引入进来
  imports: [
    // TypeOrmModule.forRoot() 链接数据库
    TypeOrmModule.forRoot({
      type: 'mysql',
      host,
      port,
      username: username.trim(),
      password: password.trim(),
      autoLoadEntities: true, // 自动加载实体
      database: 'vebn-book-dev'
    }),
    UserModule,
    AuthModule,
    BookModule
  ],
  // 控制器
  controllers: [AppController],
  // 提供者 也叫注入者 就是 service.ts 文件
  providers: [AppService, TestService]
})
export class AppModule {}
